package GUI.manager;

import java.util.List;

import core.model.Categoria;

import java.util.HashMap;

import core.model.Carrito;
import core.model.Empresa;
import core.model.Lista;
import core.model.Producto;
import core.model.Provincia;
import core.model.Subcategoria;
import core.model.Sugerencia;
import core.model.Usuario;

/**
 * @author andoniibarguchilorenzo
 * interface que contiene los metodos necesarios para la parte GUI de la base de datos, implemetnados en el dao o en el manager del package core
 */
public interface VentanaManager {

	void insertUser(Usuario usuario);

	void deleteUser(String nick);

	Producto findBy(String codigo_barras);

	List<Provincia> getAllProvincias();

	List<Categoria> getAllCategorias();

	List<Subcategoria> getAllSubcategorias();

	Categoria getCategoriaByName(String nombre);

	int getCodigoProvincia(String nombre_provincia);

	List<Provincia> getAll();

	HashMap<String, String> getPasswords();

	List<Categoria> getAllNombreCategorias();

	List<Empresa> getEmpresas();

	Categoria getCategoriaByCode(int codigo_categoria);

	Subcategoria getSubcategoriaByCode(int cod_subcategoria);

	List<Subcategoria> getSubcategoriaByCodeCategoria(int cod_categoria);
	
	Usuario findUsuarioBy(String nick);
	
	List<Empresa> findByCodigoProducto (String codigo_producto);

	Empresa findCodigoEmpresa(int codigo_empresa);

	Empresa findByNombreEmpresa(String nombre_empresa);
	
	Empresa findPrecio(int codigo_empresa, String codigo_producto);
	
	List<Producto> getAllProductos(int cod_subcategoria);

	Subcategoria getSubcategoriaByName (String nombre_subcategoria);
	
	Producto findProductoByNombre(String nombre_producto);
	
	List<Lista> getallListas();
	
	List<Carrito> findByLista(int cod_lista);
	
	void deleteLista(int cod_lista);
   
	void ModifyUsuario(Usuario user) ;
		
	List<Sugerencia> getSugerenciasByCode(int cod_tipo);

	void insertarSugerencia(Sugerencia sugerencia);
	
	Sugerencia getSugerencia(int cod_sugerencia);
	
	void insertProducto(Producto producto);
	
	void insertProductoSupermercado(int cod_empresa,String cod_producto, float precio);
	
	void deleteSugerencia(int cod_sugerencia);
	
	void insertProductoLista(int cod_supermercado, String cod_producto, int cod_lista, int cantidad);
	
    Lista findbyTitulo(String titulo_lista);
    
    void insertLista(Lista lista);
    
    int getCodigo(String nombre_lista);
}